package com.example.yuejian11.activity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.example.yuejian11.R;
import com.example.yuejian11.adapter.MyPagerAdapter;
import com.example.yuejian11.bean.BannerEntity;
import com.example.yuejian11.common.GlideImageLoader;
import com.example.yuejian11.common.Url;
import com.example.yuejian11.fragment.MainFragment;
import com.example.yuejian11.fragment.OtherFragment;
import com.example.yuejian11.view.DecoratorViewPager;
import com.example.yuejian11.view.TitleView;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.zhouyou.http.EasyHttp;
import com.zhouyou.http.callback.SimpleCallBack;
import com.zhouyou.http.exception.ApiException;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;

public class MainActivity extends BaseActivity {

    private static final String TAG = "MainActivity";

    @BindView(R.id.vp)
    DecoratorViewPager viewpager;

    @BindView(R.id.tablayout)
    TabLayout tabLayout;

    @BindView(R.id.banner)
    Banner banner;
//handler是android中为了处理异步线程更新UI的问题而出现的一个工具。
//在android异步线程是不能够更新UI的，只能在主线程中更新UI。
//
//这里的mhandler不会被你自己调用。你所要做的就是向handler中传递消息，然后handler响应你所传递来的消息。
//handler会有一个消息队列，是根据你出入的消息顺序排列的，handler会依次响应消息队列里面的消息。
//
//总之一句话，就是，当你想要在异步线程里面更新UI的时候就使用handler就好了。
    private Handler mhandler = new mHandler();
    private List<Fragment> fragmentList;
    private List<String> list_Title;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);//给当前的Activity加载一个布局
        super.onCreate(savedInstanceState);//super.onCreate(savedInstanceState)就是调用父类的onCreate构造函数
        initview();
    }

    @BindView(R.id.title_activity)
    TitleView titleView;

    private void initview() {

        //解决滑动冲突
        viewpager.setNestedpParent((ViewGroup) viewpager.getParent());
        //获取标题右边的textview，设置点击
        titleView.getRightTextTv().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ActivityUtils.startActivity(SearchActivity.class);
            }
        });

        fragmentList = new ArrayList<>();
        list_Title = new ArrayList<>();
//        添加碎片
        //fragmentlist里储存了所有fragment，底部栏的数据存在list_title中
        //tablayout是底部栏，通过它和viewpager联动
        fragmentList.add(new MainFragment().setFlag("activity"));
        fragmentList.add(new MainFragment().setFlag("master"));
        fragmentList.add(new MainFragment().setFlag("bs"));
        fragmentList.add(new MainFragment().setFlag("my"));
        fragmentList.add(new MainFragment().setFlag("my"));
        fragmentList.add(new MainFragment().setFlag("my"));
        fragmentList.add(new MainFragment().setFlag("my"));
        list_Title.add("精彩活动");
        list_Title.add("权威大师");
        list_Title.add("最近比赛");
        list_Title.add("训练");
        list_Title.add("俱乐部");
        list_Title.add("晒图");
        list_Title.add("我的");

        viewpager.setAdapter(new MyPagerAdapter(getSupportFragmentManager(), this, fragmentList, list_Title));
        tabLayout.setupWithViewPager(viewpager);//此方法就是让tablayout和ViewPager联动

        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 3:
                        ActivityUtils.startActivity(TrainActivity.class);
                        break;
                    case 4:
                        ActivityUtils.startActivity(ClubActivity.class);
                        break;
                    case 5:
                        ActivityUtils.startActivity(STActivity.class);
                        break;
                    case 6:
                        ActivityUtils.startActivity(MyActivity.class);
                        break;
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        //设置banner样式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
        //设置图片加载器
        banner.setImageLoader(new GlideImageLoader());
        //设置banner动画效果
        banner.setBannerAnimation(Transformer.DepthPage);
        //设置自动轮播，默认为true
        banner.isAutoPlay(true);
        //设置轮播时间
        banner.setDelayTime(3000);
        //设置指示器位置（当banner模式中有指示器时）
        banner.setIndicatorGravity(BannerConfig.CENTER);
        //banner设置方法全部调用完毕时最后调用

        EasyHttp.get("yuejian6/public/index.php/json/banner/index")
                .execute(new SimpleCallBack<String>() {
                    @Override
                    public void onSuccess(String data) {

                        Message msg = Message.obtain(); // 实例化消息对象
                        msg.what = 1; // 消息标识
                        msg.obj = data; // 消息内容存放

                        mhandler.sendMessage(msg);

                    }

                    @Override
                    public void onError(ApiException error) {
                        Log.d(TAG, "onFailed: " + error);
                    }
                });

    }

    @Override
    protected void onStart() {
        super.onStart();
        //开始轮播
        banner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        //结束轮播
        banner.stopAutoPlay();
    }



    // 步骤1：自定义Handler子类（继承Handler类） & 复写handleMessage（）方法
    class mHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            Log.d(TAG, "handleMessage: " + msg.obj.toString());
            List<BannerEntity> banners = null;

            try {
                banners = JSON.parseArray(msg.obj.toString(), BannerEntity.class);
            } catch (Exception e) {
                ToastUtils.showShort("获取数据失败");
                return;
            }


            List<String> imgs = new ArrayList<>();
            List<String> titles = new ArrayList<>();

            for (BannerEntity banner : banners) {
                imgs.add(Url.imgUrl + banner.getPic());
                titles.add(banner.getIntro());
            }


            //设置标题集合（当banner样式有显示title时）
            banner.setBannerTitles(titles);
            //设置图片集合
            banner.setImages(imgs);
            banner.start();

        }
    }

}